In critical real-time systems, tasks are often modeled as periodic activities, leading to the realization of multitasking systems based on a fixed priorities policy for task scheduling, providing guarantees on performance achievement. Such a system is described, for example, in the article [“Scheduling algorithms for Multiprogramming in a hard real-time environment”, C. Liu, J. Layland, Journal of the ACM, vol. 20, no. 1, pp. 46-61].
However, this approach lacks flexibility when the very simple model of periodic tasks complexifies or constrains the design of the multitasking system by an arbitrary division into periodic tasks of certain real-time activities that are not periodic a priori. Indeed, when a non-periodic real-time activity is implemented in the form of periodic activities, this leads to increasing the number of tasks or increasing the execution pace to meet the time constraints separately. Each task may then no longer be useful to each periodic execution, which negatively impacts the performance of the multitasking system.
Other approaches, such as those described in the articles [“Giotto: A Time-Triggered Language for Embedded Programming”, Thomas A. Henzinger, Benjamin Horowitz, and Christoph Meyer Kirsch, EMSOFT 2001, pp. 166-184, 2001, Springer-Verlag] and [“A method and a technique to model and ensure timeliness in safety critical real-time systems”, C. Aussaguès, V. David, Fourth IEEE International Conference on Engineering of Complex Computer Systems, 1998] propose more flexible task models to describe each task as sequences of temporal activities. A task is then formalized in the form of a graph of processes with time constraints, where the processes may, if required, be conditional, as proposed in U.S. Pat. No. 7,299,383.
It is then possible to achieve a high flexibility and a high level of performance of the multitasking system, and even a faunal guarantee that tasks can be scheduled, but this guarantee generally requires dynamic scheduling in the system. This results in temporal interference between the tasks in that the tasks, or the tasks' processes compete for scheduling, and that a task can thus be executed before or after a concurrent task.
In critical systems, where safety of the execution is paramount, dynamic scheduling systems are avoided, because it is not possible to exhaustively test all possible -scheduling combinations or to prove the absence of failure situations. Systems with reduced combinations to test are then preferred, thus systems limiting temporal interference between tasks. This typically leads to using static approaches that lack flexibility.